package com.tanhua.server.service;

import com.alibaba.fastjson.JSON;
import org.springframework.amqp.AmqpException;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * @Author: cl
 * @Date: 2022/5/17 - 05 - 17
 * @Description:
 */

/**
 * 发送mq消息服务(工具类)
 */
@Service
public class MqMessageService {

    //mq模板
    @Autowired
    private AmqpTemplate amqpTemplate;

    /**
     * 发送日志消息
     *
     * @param userId 用户id
     * @param type   用户操作的类型
     * @param key    存储到mq的key
     * @param busId  动态或者评论的id
     */
    public void sendLogMessage(Long userId, String type, String key, String busId) {

        //可能有异常，需要手动处理
        try {
            //1、创建map集合用于保存数据
            Map map = new HashMap();
            map.put("userId", userId.toString());
            map.put("type", type);
            map.put("logTime", new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
            map.put("busId", busId);
            //2、将map集合转化为json字符串方便保存和解析
            String message = JSON.toJSONString(map);
            //3、使用mq模板发送消息(交换机名称，key,消息内容)
            amqpTemplate.convertAndSend("tanhua.log.exchange", "log." + key, message);
        } catch (AmqpException e) {
            e.printStackTrace();
        }
    }

    /**
     * 发送动态审核消息
     *
     * @param movementId
     */
    public void sendAudiMessage(String movementId) {
        try {
            amqpTemplate.convertAndSend("tanhua.audit.exchange", "audit.movement", movementId);
        } catch (AmqpException e) {
            e.printStackTrace();
        }
    }
}
